数组初始化
数组可以用一系列值进行初始化。例如,
int v1[] = { 1, 2, 3, 4 };
char v2[] = { 'a', 'b', 'c', 0 };
当数组声明中没有给出数组大小,但是有初始式列表时,数组的大小就通过数出列表中元素个数的方式确定。因此,v1和v2的类型分别是int[4]和char[4]。如果明确给出了大小,在初始化列表中给了多余的元素就是错误。例如,
char v3[2] = { 'a', 'b', 0 }; // 错误❌:初始式太多
char v4[3] = { 'a', 'b', 0 }; // 可以
如果初始式列表里的元素太少,剩余的元素将被设定为0。例如,
int v5[8] = { 1, 2, 3, 4 };
等价于
int v5[] = { 1, 2, 3, 4, 0, 0, 0, 0 };
请注意,并不存在与数组初始化相对应的数组赋值:
void f()
{
v4 = { 'c', 'd', 0 }; // 错误❌:没有数组赋值
}
如果你需要用这种赋值,请使用vector(16.3节)或者valarray(22.4节)。
字符的数组可以很方便地用字符串文字量(5.2.2节)进行初始化。
🔚